home *** CD-ROM | disk | FTP | other *** search
/ Megahits 6 / Megahits 6 (1995)(GTI - Rhein-Main-Soft)(DE)(Disc 2 of 2)[!].iso / time_ungepackt / time_361_390 / time_387 / megafish / rexx / aminet2mfish.mfish next >
Text File  |  1995-07-15  |  5KB  |  183 lines

  1. /* 
  2.    Convert Aminet CD Index
  3.    (W)1994 by Th. Omilian
  4.    for Mega/Fish Amiga  
  5.    This is public domain.
  6.    $VER: Aminet2MFish 1.1 (5.3.1995)
  7. */
  8.  
  9.  
  10. CSI = "9b"x
  11. GREY = CSI||"30m"
  12. BLACK = CSI||"31m"
  13. WHITE = CSI||"32m"
  14. BLUE = CSI||"33m"
  15. BGREY = CSI||"40m"
  16. BBLACK = CSI||"41m"
  17. BWHITE = CSI||"42m"
  18. BBLUE = CSI||"43m"
  19. CLSWIN = CSI||"H"||CSI||"J"
  20. CUP = CSI||"A"
  21. CDOWN = CSI||"B"
  22. CLEFT = CSI||"D"
  23. CRIGHT = CSI||"C"
  24. CLS = CSI||"J"
  25.  
  26. IF SHOW('L',"rexxsupport.library") = 0 THEN DO
  27.     CALL ADDLIB('rexxsupport.library',0,-30,0)
  28. END
  29.  
  30. echo CLSWIN||BBLACK||WHITE||center("Aminet2MFish - Ein Aminet Index Konverter",60," ")
  31. echo center("(C)1994-1995 Thomas Omilian - (Idee) ARo",60," ")
  32. echo center("für MEGA/FISH AMIGA ab V1.08",60," ")
  33. echo
  34. options prompt BGREY||BLACK||"Pfad zur AminetCD (Return="||WHITE||"CD0:"||BLACK||")>"||BLACK||" "
  35.  
  36. pull pfad
  37. options prompt WHITE||"<RETURN>"
  38. if pfad = "" then pfad = "CD0:"
  39.  
  40. DiskName = showlist('v',,';')
  41. IF DiskName = "" THEN EXIT
  42. DiskName = TRANSLATE(DiskName,'_',' ')
  43. DiskName = TRANSLATE(DiskName,' ',';')
  44. anzdir = WORDS(STRIP(DiskName))
  45. DiskNum = ""
  46. DO anzdir
  47.    dirname = word(DiskName,1)
  48.    dirname = UPPER(dirname)
  49.    IF LEFT(dirname,6) = "AMINET" THEN DO
  50.                                       DiskNum = substr(dirname,7,1)
  51.                                       END
  52.    DiskName = DELWORD(DiskName,1,1);DiskName = STRIP(DiskName)
  53. END 
  54. IF DiskNum = "" THEN DO
  55.                 SAY "Keine Aminet-CD im Laufwerk";pull x;exit
  56.                 END
  57.  
  58. OPTIONS PROMPT BGREY||BLACK||"Nummer der CD (RETURN=1) > "||WHITE
  59. PULL DiskNum
  60. OPTIONS PROMPT WHITE||"<RETURN>"
  61.  
  62. if exists(pfad) = 0 then do
  63.  echo CUP||CLS||BLACK||"Pfad "||WHITE||pfad||BLACK||" existiert nicht !"
  64.  pull x;exit
  65.  end
  66.  
  67. echo CUP||CLS||BLACK||"Erstelle AMINET-Verzeichnis für MFish..."
  68.  
  69. OACCESS = "A"
  70. if exists("DATAAminet") = 0 then do
  71.  address command "MAKEDIR DATAAmiNet";OACCESS = "W"
  72. end
  73.  
  74. IF open('MIndex',"DATAAminet/INDEX",OACCESS) = 0 then do
  75.    echo CLS||"Fehler beim Öffnen von INDEX"
  76.    pull x;exit
  77.    end
  78.    
  79. if open('MNames',"DATAAminet/NAMES",OACCESS) = 0 then do
  80.    echo CLS||"Fehler beim Öffnen von NAMES"
  81.    close('MIndex')
  82.    pull x;exit
  83.    end
  84.  
  85. if open('MData',"DATAAminet/DATA",OACCESS) = 0 then do
  86.    echo CLS||"Fehler beim Öffnen von DATA"
  87.    close('MIndex');close('MNames')
  88.    pull x;exit
  89.    end
  90.  
  91. if open('AIndex',pfad||"aminet/index","READ") = 0 then do
  92.    echo CLS||"Fehler beim Öffnen von "||pfad||"AMINET/INDEX"
  93.    close('MIndex');close('MNames');close('MData')
  94.    pull x;exit
  95.    end
  96.  
  97. IF OACCESS = "W" THEN DO
  98.    c = writech('MData',"MEGAFISHANET")
  99.    END
  100.  
  101. OPTIONS PROMPT BGREY||BLACK||"'README'-Dateien mit einlesen (RETURN=JA)"||WHITE
  102. pull MeRead
  103. OPTIONS PROMPT WHITE||"<RETURN>"
  104.  
  105. echo CUP||CLS||WHITE||"Bitte warten - Konvertierung läuft"
  106. echo;echo BLACK
  107.  
  108. datapos = seek('MData',0,'e')
  109. FileNum = 0
  110. DiskNum = RIGHT(DiskNum,4,"0")
  111.  
  112. do while eof('AIndex') ~= 1
  113.    Z = readln('AIndex')
  114.    if Z ~= "" then do
  115.       echo CUP||left(Z,60)||CSI||"K"
  116.       if left(Z,1) ~= "|" then do
  117.       FileNum = FileNum + 1
  118.       MyName = left(Z,21)
  119.       MyName = strip(MyName)
  120.       KillPoint = LastPos('.',MyName)
  121.       if KillPoint ~= 0 then do
  122.          MyName = left(MyName,KillPoint-1)
  123.          end
  124.       MyMName = left(MyName,19," ")||"00"x
  125.       
  126.       MyPath = delstr(Z,1,21)
  127.       MyText = MyPath
  128.       MyPath = word(MyPath,1)
  129.  
  130.       MyText = delword(MyText,1,1)
  131.       KillPoint = Pos("K",MyText)
  132.       MyText = delstr(MyText,1,KillPoint)
  133.       ReadMe = left(MyText,1)
  134.       MyText = delstr(MyText,1,1)
  135.       MyReadMe = pfad||"aminet/"||MyPath||"/"||MyName||".readme"
  136.  
  137.       NewText = ""
  138.  
  139.       if MeRead = "" then do
  140.          DFail = Open('liesmich',MyReadMe,'READ')
  141.          if DFail = 1 then Do while eof('liesmich') ~= 1
  142.          X = readln('liesmich')
  143.          X = strip(X)
  144.          X = TRANSLATE(X,"    ",'09'x)
  145.          if X ~= "" then do;NewText = NewText||X||"00"x;end
  146.          end
  147.          c = close('liesmich')
  148.       end
  149.  
  150.       MyText = MyText||"00"x
  151.       if NewText ~= "" then MyText = NewText
  152.       MyText = MyText||"Path: "||MyPath||"00"x
  153.       
  154.       MyLen = length(MyText)
  155.       MyIndex = "00000000"                  /* leerer Schlüssel (hex) */
  156.       MyIndex = MyIndex||DiskNum             /* Disk Nummer z.B "0004" (hex)   */
  157.       MyPos = D2X(datapos)
  158.       MyPos = right(MyPos,8,"0")
  159.       MyLen = D2X(MyLen)
  160.       MyLen = right(MyLen,4,"0")
  161.       MyIndex = MyIndex||MyPos||MyLen
  162.       MyIndex = MyIndex||"0000"             /* Flags leer (hex) */
  163.       MyIndex = X2C(MyIndex)
  164.  
  165.       c = writech('MNames',MyMName)
  166.       c = writech('MIndex',MyIndex)
  167.       c = writech('MData',MyText)
  168.  
  169.       DataPos = DataPos + length(MyText)
  170.       
  171.       end
  172.    end
  173. end
  174.  
  175. echo WHITE||"Konvertierung beendet - "||FileNum||" Einträge bearbeitet."
  176.  
  177. c = close('MIndex');c = close('MNames');c = close('MData');c = close('AIndex')
  178.  
  179. pull feddich
  180.  
  181. OPENDIR "Aminet"
  182.  
  183.